Remote computing systems can enable users to remotely access hosted resources. Servers on the remote computing systems can execute programs and transmit signals indicative of a user interface to clients that can connect by sending signals over a network conforming to a communication protocol such as the TCP/IP protocol. Each connecting client may be provided a remote presentation session, i.e., an execution environment that includes a set of resources. Each client can transmit signals indicative of user input to the server and the server can apply the user input to the appropriate session. The clients may use remote presentation protocols such as the Remote Desktop Protocol (RDP) to connect to a server resource.
In a server-based computing environment, the rendering and management of the client desktops and the subsequent transmission to the remote client requires a great deal of resources. Such resources include computational cycles, memory for frame buffers, and network bandwidth. Furthermore, current systems may not effectively address network bandwidth issues. For example, in some systems every captured frame may be compressed. If the network is congested, then frames may be dropped and queued frames may only be sent when the network resources are eventually freed. As the server scalability continues to increase, better and more efficient ways of managing this process is needed. Thus, other techniques are needed in the art to solve the above described problems.